# -*- coding: utf-8 -*-
"""
Module Description: 说明见area_lock_define.py
Date: 2015/9/6
Author:Bai Jin Ping
"""


class RoleLock(object):
    # 行为：跨服攻城战玩家大臣数据修改行为锁
    # 加锁原因： 防止其它玩家同时扣除此玩家大臣的血量
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 全局
    G_ROLE_MODIFY_MINISTER_HP_LOCK = 'G_ROLE_MODIFY_MINISTER_HP_LOCK:{ServerId}:{RoleGuid}:{MinisterId}'
    # 行为：跨服攻城战城池修改行为锁
    # 加锁原因： 防止其它玩家同时扣除此城池的血量
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 全局
    G_ROLE_MODIFY_CITY_HP_LOCK = 'G_ROLE_MODIFY_CITY_HP_LOCK:{ServerId}'


class RankLock(object):
    # 行为：修改排行榜
    # 加锁原因： 防止后台操作排行榜与业务操作排行榜出现冲突
    # 加锁时间: 5s
    # 锁类型：玩家
    # 影响范围： 单记录
    U_RANK_MODIFY_LOCK = 'U_RANK_MODIFY_LOCK:{RoleGuid}'

    # 行为：区服排行总和涨幅 - 活动
    # 加锁原因： 防止后同区服多玩家同时操作
    # 加锁时间: 1s
    # 锁类型：区服
    # 影响范围： 区服
    U_SERVER_RANK_MODIFY_LOCK = 'U_SERVER_RANK_MODIFY_LOCK:{a_id}'


class AllianceLock(object):
    # 行为：退出联盟
    # 加锁原因： 防止退出联盟涉及的业务操作跟对应的功能有冲突
    # 加锁时间: 默认
    # 锁类型：玩家
    # 影响范围： 多记录
    U_ALLIANCE_EXIT_LOCK = 'U_ALLIANCE_EXIT_LOCK:{RoleGuid}'


class CrossTableLock(object):
    # 行为：批量插入数据
    # 加锁原因： 减轻数据库压力
    # 加锁时间: 默认
    # 锁类型：活动
    # 影响范围： 全局

    # 百家争鸣角色表
    G_Create_Cross_Contend_Role = 'G_Create_Cross_Contend_Role:{activity_id}'
    # 百家争鸣大臣表
    G_Create_Cross_Contend_Minister = 'G_Create_Cross_Contend_Minister:{activity_id}'


class CrossSiegeLock(object):
    # 行为：更新城池血量
    # 加锁原因： 防止区服内同时更新城池血量
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 全局
    G_UPDATE_CITY_HP_LOCK = 'G_UPDATE_CITY_HP_LOCK'
    # 行为：更新玩家大臣血量
    # 加锁原因： 防止筑城和手动同步一起更新玩家大臣血量
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 全局
    G_UPDATE_MINISTER_HP_LOCK = 'G_UPDATE_MINISTER_HP_LOCK'
    # 行为：更新玩家城池积分
    # 加锁原因： 防止同一个区服同时被攻击，造成的并发
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 多人
    G_UPDATE_CITY_SCORE_LOCK = 'G_UPDATE_CITY_SCORE_LOCK:{round_id}:{server_id}'


class CrossRuinsLock(object):
    # 行为：打开宝箱
    # 加锁：防止一个宝箱被多人打开
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_OPEN_CHEST_LOCK = "MU_OPEN_CHEST_LOCK:{RuinsId}:{SquareScope}:{SquareNum}"

    # 行为：联盟积分变动
    # 加锁：防止联盟积分被多人修改
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    Mu_UPDATE_ALLIANCE_SCORE = 'G_UPDATE_ALLIANCE_SCORE:{ruins_id}:{alliance_id}'


class CrossChessTeamLock(object):
    # 行为：创建队伍
    # 加锁：防止队伍名称重名
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_CREATE_CHESS_TEAM = "MU_CREATE_CHESS_TEAM:{a_id}:{name}"

    # 行为：加入队伍
    # 加锁：防止同时加入多个队伍
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：个人
    U_JOIN_CHESS_TEAM = "U_JOIN_CHESS_TEAM:{rid}"


class CrossChessPlayLock(object):
    # 行为：攻击角色
    # 加锁：防止同一个角色被多人同时攻击
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_BATTLE_PLAY = "MU_BATTLE_PLAY:{rid}"


class CrossNaadamLock(object):
    # 行为：联盟积分变动
    # 加锁：防止联盟积分被多人修改
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    Mu_UPDATE_ALLIANCE_SCORE = 'G_UPDATE_ALLIANCE_SCORE:{activity_id}:{alliance_id}'
    # 行为：攻打npc事件
    # 加锁：防止多人同时攻击同一个玩家标记的Npc
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_ATK_AFFAIR_NPC = 'MU_ATK_AFFAIR_NPC:{activity_id}:{rid}'
    # 行为：攻击boss/秘境守护者
    # 加锁：防止多人同时攻击boss/秘境守护者
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_ATK_BOSS = 'MU_ATK_BOSS:{activity_id}:{boss_guid}'
    # 行为：提升跨服声望值
    # 加锁：防止多人提升跨服声望的时候同时生成boss
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_ACTIVITY_BOSS = 'MU_ACTIVITY_BOSS:{activity_id}'
    # 行为：攻打玩家事件
    # 加锁：防止多人同时攻击同一个玩家标记的玩家事件
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_ATK_AFFAIR_PLAY = 'MU_ATK_AFFAIR_PLAY:{activity_id}:{affair_id}'


class CrossContendLock(object):
    # 行为：金榜题名联盟积分变动
    # 加锁：防止联盟积分被多人修改
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    Mu_UPDATE_FIGHT_ALLIANCE_SCORE = 'G_UPDATE_FIGHT_ALLIANCE_SCORE:{activity_id}:{alliance_id}'
    # 行为：名著联盟积分变动
    # 加锁：防止联盟积分被多人修改
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    Mu_UPDATE_MASTERWORK_ALLIANCE_SCORE = 'G_UPDATE_MASTERWORK_ALLIANCE_SCORE:{activity_id}:{alliance_id}'
    # 行为：占领书院
    # 加锁：防止书院状态、占领者状态、大臣血量被多人修改
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_OCCUPIED_ACADEMY = 'MU_OCCUPIED_ACADEMY:{activity_id}:{academy_type}:{academy_id}'


class CrossSaintLock(object):
    # 行为：圣君登基活动数据修改
    # 加锁：防止玩家，定时任务同时修改活动数据
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    G_CROSS_SAINT_ASCEND_ACTIVITY = 'G_CROSS_SAINT_ASCEND_ACTIVITY:{activity_id}'
    # 行为：圣君登基活动赐号热度
    # 加锁：防止定时任务同时修改年号热度数据
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    G_CROSS_SAINT_ASCEND_REIGN_HEAT = 'G_CROSS_SAINT_ASCEND_REIGN_HEAT:{activity_id}'
    # 行为：生成圣君登基活动
    # 加锁：防止定时任务，玩家主动触发，同时生成圣君
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    G_CROSS_SAINT_ASCEND_BUILD = 'G_CROSS_SAINT_ASCEND_BUILD:{activity_id}'
    # 行为：创建圣君登基
    # 加锁：防止异步消费者卡顿导致多次请求跨服创建登基活动
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：单人
    U_CREATE_SAINT_ASCEND_LOCK = "U_CREATE_SAINT_ASCEND_LOCK:{ActivityId}"


class CrossAlliesLock(object):
    # 行为：同盟国修改国家名
    # 加锁：防止同名情况出现
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_CROSS_ALLIES_NAME_CHANGE = 'MU_CROSS_ALLIES_NAME_CHANGE:{country_name}'

    # 行为：同盟国玩家加入国家
    # 加锁：防止多个国家同意玩家入国申请，导致玩家加入多个国家
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：单人
    U_CROSS_ALLIES_ADD_COUNTRY = 'U_CROSS_ALLIES_ADD_COUNTRY:{rid}'

    # 行为：同盟国职位变更
    # 加锁：防止职位任命人数超过上限
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：单人
    U_CROSS_ALLIES_AUTH_CHANGE = 'U_CROSS_ALLIES_AUTH_CHANGE:{allies_id}:{country_id}:{auth_lv}'

    # 行为：同盟国创建队伍/加入队伍
    # 加锁：防止同一个玩家加入多个队伍情况出现
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：单人
    MU_CROSS_ALLIES_TEAM = 'MU_CROSS_ALLIES_TEAM:{team_id}'

    # 行为：创建队伍
    # 加锁：防止队伍名称重名
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_CROSS_ALLIES_CREATED_TEAM_NAME = "MU_CROSS_ALLIES_CREATED_TEAM_NAME:{allies_id}:{country_id}:{team_name}"

    # 行为：竞选结束初始化数据
    # 加锁：防止多人触发
    # 加锁时间：60
    # 锁类型：玩家
    # 影响范围：同一同盟国玩家
    MU_CROSS_ALLIES_CAMPAIGNED_LOCK = "MU_CROSS_ALLIES_CAMPAIGNED_LOCK:{allies_id}"

    # 行为：涉及触发刷新同盟国国家缓存
    # 加锁：防止多人触发
    # 加锁时间：60
    # 锁类型：玩家
    # 影响范围：同一同盟国玩家
    MU_CROSS_ALLIES_CACHE_LOCK = "MU_CROSS_ALLIES_CACHE_LOCK:{allies_id}:{country_id}"


class CrossIslandLock(object):
    # 行为：战斗
    # 加锁：防止多人同时攻击同一个事件
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_ISLAND_ATK_AFFAIR = 'MU_ISLAND_ATK_AFFAIR:{affair_id}'
    # 行为：计算战力
    # 加锁：防止多人同时更新战斗力
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_ISLAND_ROLE_POWER = 'MU_ISLAND_ROLE_POWER:{rid}'
    # 行为：协助赎回
    # 加锁：防止多人同时赎回
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_ISLAND_ASSIST_REDEMPTION = 'MU_ISLAND_ASSIST_REDEMPTION:{capture_id}'
    # 行为：攻击boss
    # 加锁：防止多人同时攻击boss
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_ATK_BOSS = 'MU_ATK_BOSS:{activity_id}:{boss_guid}'


class CrossSeasonLock(object):
    # 行为：解锁赛季巅峰挑战任务行为锁
    # 加锁原因： 防止其他玩家同时触发
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 全局
    G_SEASON_UNLOCK_CHALLENGE_LOCK = 'G_SEASON_UNLOCK_CHALLENGE_LOCK:{season_id}:{cha_id}'

    # 行为：解锁增加赛季积分行为锁
    # 加锁原因： 防止打怪掉落和第二阶段奖励同时增加积分
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 全局（区服跨服公用）
    G_SEASON_ADD_SEASON_SCORE_LOCK = 'G_SEASON_ADD_SEASON_SCORE_LOCK:{season_id}:{rid}'

    # 行为：解锁增加赛季段位经验行为锁
    # 加锁原因： 防止打怪掉落和第二阶段奖励同时增加积分
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 全局（区服跨服公用）
    G_SEASON_ADD_SEASON_DAN_EXP_LOCK = 'G_SEASON_ADD_SEASON_DAN_EXP_LOCK:{season_id}:{rid}'

    # 行为：赛季盛会高级赴宴锁
    # 加锁原因： 防止多人同时赴宴
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 多人
    MU_SEASON_PAGEANT_ADVANCE_ATTEND_LOCK = 'MU_SEASON_PAGEANT_ADVANCE_ATTEND_LOCK:{activity_id}'
    # 行为：赛季盛会普通赴宴锁
    # 加锁原因： 防止多人同时赴宴
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 多人
    MU_SEASON_PAGEANT_NORMAL_ATTEND_LOCK = 'MU_SEASON_PAGEANT_NORMAL_ATTEND_LOCK:{activity_id}:{seat_num}'
    # 行为：赛季盛会赴宴人数
    # 加锁原因： 防止多人同时更新
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 多人
    MU_SEASON_PAGEANT_ATTEND_COUNT_LOCK = 'MU_SEASON_PAGEANT_ATTEND_COUNT_LOCK:{activity_id}'


class CrossClearanceLock(object):
    # 行为：联盟积分变动
    # 加锁：防止联盟积分被多人修改
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    Mu_CLEARANCE_ALLIANCE_SCORE = 'Mu_CLEARANCE_ALLIANCE_SCORE:{activity_id}:{alliance_id}'
    # 行为：联盟任务变动
    # 加锁：防止联盟积分被多人修改
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    Mu_CLEARANCE_ALLIANCE_TASK = 'Mu_CLEARANCE_ALLIANCE_TASK:{activity_id}:{alliance_id}'
    # 行为：赠送道具
    # 加锁：防止多人同时赠送道具
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    Mu_CLEARANCE_GIVE_ITEM = 'Mu_CLEARANCE_GIVE_ITEM:{rid}'


class CrossMonopolyLock(object):
    # 行为：联盟积分变动
    # 加锁：防止联盟积分被多人修改
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_MONOPOLY_ALLIANCE_SCORE = 'MU_MONOPOLY_ALLIANCE_SCORE:{activity_id}:{alliance_id}'

    # 行为：战斗
    # 加锁：防止多人同时攻击同一个事件
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_MONOPOLY_ATK_AFFAIR = 'MU_MONOPOLY_ATK_AFFAIR:{affair_id}'


class CrossSiegelordLock(object):
    # 行为：地块拥有者变更
    # 加锁：防止地块拥有者被多人修改
    # 加锁时间：默认
    # 锁类型：地块
    # 影响范围：多人
    MU_SIEGELORD_POINT = 'MU_SIEGELORD_POINT:{activity_id}:{x}:{y}'

    # 行为：队伍数据变更
    # 加锁：防止多人同时修改队伍数据
    # 加锁时间：默认
    # 锁类型：队伍
    # 影响范围：多人
    MU_SIEGELORD_TEAM = 'MU_SIEGELORD_TEAM:{activity_id}:{team_id}'


class CrossCeladonLock(object):

    # 行为：协助开启宝箱
    # 加锁：防止多人同时协助宝箱
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_CELADON_ASSIST_CHEST = 'MU_CELADON_ASSIST:{affair_id}'

    # 行为：协助战斗
    # 加锁：防止多人同时协助攻击同一个npc
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_CELADON_ASSIST_NPC = 'MU_CELADON_ASSIST_NPC:{affair_id}'

    # 行为：盟国积分变动
    # 加锁：防止盟国积分被多人修改
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_CELADON_ALLIES_SCORE = 'MU_CELADON_ALLIES_SCORE:{allies_id}:{country_id}'

    # 行为：解锁问鼎挑战任务行为锁
    # 加锁原因： 防止其他玩家同时触发
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 全局
    G_CELADON_ACHIEVE_CHALLENGE_LOCK = 'G_CELADON_ACHIEVE_CHALLENGE_LOCK:{allies_id}:{task_type}:{challenge_id}'


class CrossTowerLock(object):

    # 行为：协助战斗
    # 加锁：防止多人同时协助攻击同一个npc
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_TOWER_ASSIST_FIGHT = 'MU_TOWER_ASSIST_FIGHT:{affair_id}'

    # 行为：盟国积分变动
    # 加锁：防止盟国积分被多人修改
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_TOWER_ALLIES_SCORE = 'MU_TOWER_ALLIES_SCORE:{allies_id}:{country_id}'

    # 行为：解锁荣誉展示任务行为锁
    # 加锁原因： 防止其他玩家同时触发
    # 加锁时间： 默认
    # 锁类型： 玩家
    # 影响范围： 全局
    G_TOWER_HONOR_ACHIEVE_LOCK = 'G_TOWER_HONOR_ACHIEVE_LOCK:{activity_id}:{task_type}:{task_id}'

    # 行为：协助脱离陷阱
    # 加锁：防止多人同时协助盟友脱离陷阱
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_TOWER_ASSIST_TRAP = 'MU_TOWER_ASSIST_TRAP:{affair_id}'


class CrossFightLock(object):
    # 行为：攻击
    # 加锁：防止多人攻击同一玩家
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_FIGHT_BATTLE_ROLE = 'MU_FIGHT_BATTLE_ROLE:{rid}'


class CrossFightCheerLock(object):
    # 行为：助威
    # 加锁：防止同一个角色被多人同时助威
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_CHEER_ROLE = "MU_CHEER_ROLE:{rid}"


class CrossFightVoteLock(object):
    # 行为：使用投票券
    # 加锁：防止同一个角色被多人同时使用投票券增加人气
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_VOTE_ROLE = "MU_VOTE_ROLE:{rid}"


class CrossFishLock(object):
    # 行为：防止同时多人初始化盟国成就进度
    # 加锁：防止联盟积分被多人修改
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    Mu_FISH_INIT_ALLIES_ACHIEVE = 'Mu_FISH_INIT_ALLIES_ACHIEVE:{activity_id}:{allies_id}:{country_id}'


class DragonEmperorApplyLock(object):
    # 行为：申请/清除申请记录
    # 加锁：防止同一个角色同时申请/被删除申请记录
    # 加锁时间：默认
    # 锁类型：玩家
    # 影响范围：多人
    MU_DRAGON_EMPEROR_APPLY = "MU_DRAGON_EMPEROR_APPLY:{rid}"
